From 2c883a70e22eeaeb43b6c67b9f553adb24371797 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 2 Feb 2023 12:30:46 +0100 Subject: [PATCH] Add GdkMonitor::description This is the right string to when showing monitors in the UI. --- gdk/gdkmonitor.c | 48 +++++++++++++++++++++++++++++++++++++++++ gdk/gdkmonitor.h | 2 ++ gdk/gdkmonitorprivate.h | 3 +++ 3 files changed, 53 insertions(+) diff --git a/gdk/gdkmonitor.c b/gdk/gdkmonitor.c index 2d6cbb4fde..96d7fe4416 100644 --- a/gdk/gdkmonitor.c +++ b/gdk/gdkmonitor.c @@ -39,6 +39,7 @@ enum { PROP_0, + PROP_DESCRIPTION, PROP_DISPLAY, PROP_MANUFACTURER, PROP_MODEL, @@ -81,6 +82,10 @@ gdk_monitor_get_property (GObject *object, switch (prop_id) { + case PROP_DESCRIPTION: + g_value_set_string (value, monitor->description); + break; + case PROP_DISPLAY: g_value_set_object (value, monitor->display); break; @@ -154,6 +159,7 @@ gdk_monitor_finalize (GObject *object) { GdkMonitor *monitor = GDK_MONITOR (object); + g_free (monitor->description); g_free (monitor->connector); g_free (monitor->manufacturer); g_free (monitor->model); @@ -170,6 +176,18 @@ gdk_monitor_class_init (GdkMonitorClass *class) object_class->get_property = gdk_monitor_get_property; object_class->set_property = gdk_monitor_set_property; + /** + * GdkMonitor:description: (attributes org.gtk.Property.get=gdk_monitor_get_description) + * + * A short description of the monitor, meant for display to the user. + * + * Since: 4.10 + */ + props[PROP_DESCRIPTION] = + g_param_spec_string ("description", NULL, NULL, + NULL, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + /** * GdkMonitor:display: (attributes org.gtk.Property.get=gdk_monitor_get_display) * @@ -623,3 +641,33 @@ gdk_monitor_is_valid (GdkMonitor *monitor) return monitor->valid; } + +/** + * gdk_monitor_get_description: (attributes org.gtk.Method.get_property=description) + * @monitor: a `GdkMonitor` + * + * Gets a string describing the monitor, if available. + * + * This can be used to identify a monitor in the UI. + * + * Returns: (transfer none) (nullable): the monitor description + * + * Since: 4.10 + */ +const char * +gdk_monitor_get_description (GdkMonitor *monitor) +{ + g_return_val_if_fail (GDK_IS_MONITOR (monitor), NULL); + + return monitor->description; +} + +void +gdk_monitor_set_description (GdkMonitor *monitor, + const char *description) +{ + g_free (monitor->description); + monitor->description = g_strdup (description); + g_object_notify_by_pspec (G_OBJECT (monitor), props[PROP_DESCRIPTION]); +} + diff --git a/gdk/gdkmonitor.h b/gdk/gdkmonitor.h index f42c999c95..11f91640c6 100644 --- a/gdk/gdkmonitor.h +++ b/gdk/gdkmonitor.h @@ -86,6 +86,8 @@ GDK_AVAILABLE_IN_ALL GdkSubpixelLayout gdk_monitor_get_subpixel_layout (GdkMonitor *monitor); GDK_AVAILABLE_IN_ALL gboolean gdk_monitor_is_valid (GdkMonitor *monitor); +GDK_AVAILABLE_IN_4_10 +const char * gdk_monitor_get_description (GdkMonitor *monitor); G_DEFINE_AUTOPTR_CLEANUP_FUNC(GdkMonitor, g_object_unref) diff --git a/gdk/gdkmonitorprivate.h b/gdk/gdkmonitorprivate.h index 36c591a8f2..275ae91391 100644 --- a/gdk/gdkmonitorprivate.h +++ b/gdk/gdkmonitorprivate.h @@ -37,6 +37,7 @@ struct _GdkMonitor { char *manufacturer; char *model; char *connector; + char *description; GdkRectangle geometry; int width_mm; int height_mm; @@ -70,6 +71,8 @@ void gdk_monitor_set_refresh_rate (GdkMonitor *monitor, void gdk_monitor_set_subpixel_layout (GdkMonitor *monitor, GdkSubpixelLayout subpixel); void gdk_monitor_invalidate (GdkMonitor *monitor); +void gdk_monitor_set_description (GdkMonitor *monitor, + const char *description); G_END_DECLS -- 2.30.2